package com.itheima.homework4_predicate2;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class Demo_Predicate2 {
    public static void main(String[] args) {
        List<String> strings = Arrays.asList("123", "123456", "abcdef", "abc123", "ab123cd", "7654321", "123abc", "123s456", "123456789123");
        /*
        请调用filterStr方法，将其中符合条件的元素保存到新集合
        条件一：元素长度为[5-10],包含5和10
        条件二：元素只能包含数字字符
        */
        String regex = "[0-9]{5,10}";
        List<String> list = filterStr(strings
                , s -> s.length() >= 5 && s.length() <= 10
                , s -> s.matches(regex)
                    /*for (int i = 0; i < s.length(); i++) {
                        char c = s.charAt(i);
                        if (c < '0' || c > '9') {
                            return false;
                        }
                    }
                    return true;
                }*/);
        // 遍历新集合
        list.forEach(s-> System.out.println(s));

    }

    // 三个参数分别表示，需要处理的集合，第一个断言条件，第二个断言条件
    public static List<String> filterStr(List<String> strs, Predicate<String> pre1, Predicate<String> pre2) {
        List<String> list = new ArrayList<>();
        for (String str : strs) {
            if (pre1.and(pre2).test(str))
                list.add(str);
        }
        return list;
    }
}
